package com.vegetable.modules.service.wx;

import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.bean.article.NewArticle;
import me.chanjar.weixin.cp.bean.message.WxCpMessage;

import java.util.List;

/**
 * 企业微信消息推送服务
 *
 * @author Qoder
 */
public interface WxCpMessageService {

    /**
     * 发送文本消息给用户
     *
     * @param userId 企业微信用户ID
     * @param content 消息内容
     * @return 是否发送成功
     * @throws WxErrorException 微信异常
     */
    boolean sendTextMessageToUser(String userId, String content) throws WxErrorException;

    /**
     * 发送文本消息给多个用户
     *
     * @param userIds 企业微信用户ID列表
     * @param content 消息内容
     * @return 是否发送成功
     * @throws WxErrorException 微信异常
     */
    boolean sendTextMessageToUsers(String[] userIds, String content) throws WxErrorException;

    /**
     * 发送文本消息给部门
     *
     * @param partyId 部门ID
     * @param content 消息内容
     * @return 是否发送成功
     * @throws WxErrorException 微信异常
     */
    boolean sendTextMessageToParty(Integer partyId, String content) throws WxErrorException;

    /**
     * 发送Markdown消息给用户
     *
     * @param userId 企业微信用户ID
     * @param content Markdown内容
     * @return 是否发送成功
     * @throws WxErrorException 微信异常
     */
    boolean sendMarkdownMessageToUser(String userId, String content) throws WxErrorException;

    /**
     * 发送Markdown消息给多个用户
     *
     * @param userIds 企业微信用户ID列表
     * @param content Markdown内容
     * @return 是否发送成功
     * @throws WxErrorException 微信异常
     */
    boolean sendMarkdownMessageToUsers(String[] userIds, String content) throws WxErrorException;

    /**
     * 发送图文消息给用户
     *
     * @param userId 企业微信用户ID
     * @param articles 图文消息列表
     * @return 是否发送成功
     * @throws WxErrorException 微信异常
     */
    boolean sendNewsMessageToUser(String userId, List<NewArticle> articles) throws WxErrorException;

    /**
     * 发送图文消息给多个用户
     *
     * @param userIds 企业微信用户ID列表
     * @param articles 图文消息列表
     * @return 是否发送成功
     * @throws WxErrorException 微信异常
     */
    boolean sendNewsMessageToUsers(String[] userIds, List<NewArticle> articles) throws WxErrorException;

    /**
     * 发送链接消息给用户
     *
     * @param userId 企业微信用户ID
     * @param title 标题
     * @param description 描述
     * @param url 链接地址
     * @param picUrl 图片链接
     * @return 是否发送成功
     * @throws WxErrorException 微信异常
     */
    boolean sendLinkMessageToUser(String userId, String title, String description, String url, String picUrl) throws WxErrorException;

    /**
     * 发送消息
     *
     * @param message 消息对象
     * @return 是否发送成功
     * @throws WxErrorException 微信异常
     */
    boolean sendMessage(WxCpMessage message) throws WxErrorException;
}